//#include<iostream>
//#include<string>
//using namespace std;
//int isMatch(string str, string mod) {
//	int i = 0, j = 0;
//	while (i < str.length() && j < mod.length()) {
//		if (str[i] == mod[j] || mod[j] == '.') {
//			i++;
//			j++;
//			continue;
//		}
//		if (mod[j] != '*' && mod[j + 1] == '*')
//			continue;
//		if (mod[j] == '*') {
//			if (j == 0 || mod[j + 1] == '*' || mod[j - 1] == '*')
//				return 0;
//			if (str[i - 1] != mod[j - 1] && mod[j - 1] != '.') {
//				i++;
//				j++;
//				continue;
//			}
//			if (mod[j - 1] == '.') {
//				if (j + 1 == mod.length())
//					return 1;
//				//while (i < str.length() && !((str[i] == mod[j + 1] || mod[j + 1] == '.') && isMatch(string(str, i), string(mod, j + 1))))
//				//	i++;
//				//j++;
//				//continue;
//				while (i < str.length()) {
//					if (!(str[i] == mod[j + 1] || mod[j + 1] == '.')) {
//						i++;
//						continue;
//					}
//					if (!isMatch(string(str, i), string(mod, j + 1)))
//						i++;
//					else
//						return 1;
//				}
//				return 0;
//			}
//			while (str[i] == mod[j - 1] && !isMatch(string(str, i), string(mod, j + 1)))
//				i++;
//			j++;
//			continue;
//		}
//		return 0;
//	}
//	if (i == str.length() && j == mod.length())
//		return 1;
//	else if (i == str.length()) {
//		if (mod[mod.length() - 1] != '*')
//			return 0;
//		if (mod[j] == '*') {
//			j++;
//			if (mod[j] == '*')
//				return 0;
//			if (j == mod.length())
//				return 1;
//		}
//		for (int k = 1; j + k < mod.length(); k += 2)
//			if (mod[j + k] != '*' || mod[j + k - 1] == '*')
//				return 0;
//		return 1;
//	}
//	return 0;
//}
//int main() {
//	string str, mod;
//	cin >> str >> mod;
//	int ans = isMatch(str, mod);
//	if (ans == 1)
//		cout << "YES" << endl;
//	else
//		cout << "NO" << endl;
//	return 0;
//}
//
//
////#include <iostream>
////#include <string>
////using namespace std;
////
////bool isMatch(string str, string mod) {
////	int i = 0, j = 0;
////	while (i < str.length() && j < mod.length()) {
////		if (str[i] == mod[j] || mod[j] == '.') {
////			i++;
////			j++;
////		}
////		else if (mod[j] == '*') {
////			int prev = j - 1;
////			while (prev >= 0 && mod[prev] == '*') {
////				prev--;
////			}
////			if (prev < 0) {
////				return false; // consecutive '*' at the beginning is not allowed
////			}
////			char prevChar = mod[prev];
////			while (i < str.length() && str[i] == prevChar) {
////				if (isMatch(str.substr(i), mod.substr(j + 1))) {
////					return true;
////				}
////				i++;
////			}
////			j++;
////		}
////		else {
////			return false;
////		}
////	}
////	return i == str.length() && j == mod.length();
////}
////
////int main() {
////	string str, mod;
////	cin >> str >> mod;
////	bool ans = isMatch(str, mod);
////	if (ans) {
////		cout << "YES" << endl;
////	}
////	else {
////		cout << "NO" << endl;
////	}
////	return 0;
////}
